When an error occurs in a digital computer operating a software program or series of programs, the fault is sometimes extremely hard to isolate. The digital computer error is sometimes either the result of a software fault or the result of a hardware fault, which is dependent upon certain software execution. In either case, it is critical to determine which instructions have most recently been executed by the digital computer at the time the error is discovered. If the last instructions executed by the digital computer are known, a large advantage is gained in isolating the instructions which were responsible for the software fault or the software instructions on which the hardware fault is dependent.
Prior art digital computer systems have previously encompassed a function known as breakpoint. In operation the breakpoint function checks the digital computer's memory references against a manually set predetermined address and detects whether the digital computer is requesting that particular address from memory. When a match between the digital computer's memory request address and the manually preset breakpoint address occurs, certain hardware action is taken. Generally, this action is either in the form of a halt, i.e., stopping the digital computer so that manual intervention can take over, or an interrupt, i.e., jump to a software diagnostic routine. As useful as the breakpoint function may be in a diagnostic environment, the breakpoint function is only useful in stopping or interrupting the digital computer once it has reached a certain address in program execution. The breakpoint function does not explain to the user or to the diagnostic program how the digital computer got to that point in the program, i.e., which series of software instructions and routines the digital computer executed before arriving at the manually preset breakpoint address.
An address recall system disclosed in the U.S. Pat. No. 4,016,543 granted to Franks, et al, entitled Processor Address Recall System, attacks the problem of determining the most recently executed instructions in a digital processor. The system disclosed in the Franks patent utilizes the previously described breakpoint function in conjunction with a memory stack for storing the addresses of the most recently executed instructions in the digital processor. The system operates by storing the address of every instruction executed by the digital processor in a memory stack and pushing down the push-down memory stack on the execution of every instruction. With a memory stack of 16 memory locations, this would give the user or diagnostic program the address of the 16 most recently executed instructions. The present invention differs from the memory address recall system disclosed in the Franks patent by maintaining a history of the addresses of only branch type instructions which have been most recently executed by the digital processor. The digital processor is known to sequence through instructions in consecutive order unless the instruction executed is a branch type instruction. The user or diagnostic program, in order to follow the exact sequence of instructions most recently executed by the digital processor, need not have the address of every instruction executed. The user or diagnostic program can construct the address of every instruction executed by referencing a list of the addresses of every branch type instruction executed. If the instruction executed is not a branch type instruction, it is a simple matter to follow the sequence of execution from the program listing. The only critical item that is necessary to be stored is the address of the branch type instructions. The present invention stores and maintains only the addresses of branch type instructions. This has the effect of widely expanding the history of most recently executed instructions. The same 16 location memory stack may be utilized instead of storing the 16 most recently executed instructions to store only the addresses of the 16 most recently executed branch type instructions and thereby gives access to the user or diagnostic program of a much much greater number of all instructions most recently executed.